/**
 * 工号管理
 * @author qiuxj
 */
var workerList = {
    init: function(dwr){
        // 增加按钮
        var addBtn = new CQCIS.Button({
            text: '增加工号 (<u>A</u>)',
            iconCls: 'btn_insert',
            handler: function(){
                workWin.load();
                workWin.form.findField("staffId").setValue(vStaff.getSelectedRow().staffId);
            }
        });
        
        // 修改按钮
        var editBtn = new CQCIS.Button({
            text: '修改工号 (<u>E</u>)',
            iconCls: 'btn_modify',
            handler: function(){
                if (grid.getSelectedRow()) {
                	workWin.load(grid.getSelectedRow()['loginId']);
                } else {
                    CQCIS.msg("请选择要修改的工号码");
                }
            }
        });
        
        var loginLevelMetas = {
        	'0': [[0, 'ADMIN账户'], [1, '系统管理员'], [2, '超级用户'], [3, '普通用户']],
            '1': [[1, '系统管理员'], [2, '超级用户'], [3, '普通用户']],
            '2': [[2, '超级用户'], [3, '普通用户']],
            '3': [[3, '普通用户']]
        };
        
        // 员工工号信息表单
        var formMeta = [{
            id: 'loginId',
            field: 'loginId',
            desc: '登录ID',
            type: 'int',
            xtype: 'hidden'
        }, {
            field: 'loginCode',
            desc: '员工工号',
            obj: {
                allowBlank: false,
                emptyText: '只能是大写字母与数字的组合',
                enableKeyEvents: false,
                maxLength: 20,
                validator: function(val){
                    var re = /^[a-z0-9_]*$/img;
                    if (!re.test(val)) {
                        return '只能是大写字母与数字的组合';
                    }
                    
                    var worker;
                    dwr.getWorkerByLoginCode(val, {
                        async: false,
                        callback: function(lv){
                            worker = lv;
                        }
                    });
                    
                    return worker && worker.loginId != workWin.form.findField('loginId').getValue() ? '该工号已经存在！' : true;
                },
                listeners: {
                    'keypress': function(o, evt){
                        if (evt.getKey() < 58 && evt.getKey() > 47) {
                            return true;
                        } else if (evt.getKey() < 91 && evt.getKey() > 64) {
                            return true;
                        } else {
                            evt.stopEvent();
                            return '只能是大写字母与数字的组合';
                        }
                    }
                }
            }
        }, {
            field: 'staffId',
            desc: '员工ID',
            type: 'int',
            xtype: 'hidden'
        }, {
            field: 'loginNum',
            desc: '登录次数',
            type: 'int',
            xtype: 'hidden'
        }, {
            field: 'loginPwd',
            desc: '登录密码',
            xtype: 'hidden'
        }, {
            field: 'loginType',
            desc: '工号类别',
            type: 'int',
            xtype: 'hidden'
        }, {
            field: 'loginLevel',
            desc: '登录级别',
            type: 'int',
            xtype: 'acombo',
            obj: {
                ds: {
                    data: loginLevelMetas[top.CURRENTUSER.loginlevel]
                },
                value: 3
            }
        }, {
            field: 'state',
            desc: '状态',
            type: 'int',
            xtype: 'acombo',
            obj: {
                ds: {
                    data: [['0', '无效'], ['1', '有效'], ['2', '锁定']],
                    fields: ['key', 'label']
                },
                value: 1
            }
        }];
        
        // 员工工号列表字段
        var gridMeta = [{
            id: 'loginId',
            desc: '工号ID',
            field: 'loginId',
            type: 'int',
            hidden: true
        }, {
            field: 'loginCode',
            desc: '登录工号'
        }, {
            field: 'loginLevel',
            desc: '工号级别',
            type: 'int',
            renderer: function(val){
	        	if (val == '0') {
	                return 'ADMIN账户';
	            }
                if (val == '1') {
                    return '系统管理员';
                } 
                if (val == '2') {
                    return '超级用户';
                }
                if (val == '3') {
                    return '普通用户';
                }
            }
        }, {
            field: 'loginNum',
            desc: '登录次数'
        }, {
            field: 'lastChgPwdTime',
            desc: '最后一次修改密码时间',
            type: 'time'
        }, {
            field: 'state',
            desc: '状态',
            type: 'int',
            renderer: function(val){
                if (val == '0') {
                    return '无效';
                } 
                if (val == '1') {
                    return '有效';
                }
            }
        }];
        // 定义表单
        var workForm = new CQCIS.form.DWRForm({
            dwr: {
                load: dwr.getWorker,
                save: dwr.createWorker,
                update: dwr.updateWorker
            },
            metas: formMeta,
            listeners: {
                'beforesave': function(o){
                    var loginCode = o.findField('loginCode').getValue();
                    /*var flag = false;
                    dwr.getWorkerByLoginCode(loginCode, {
                        async: false,
                        callback: function(lv){
                            flag = lv;
                        }
                    });
                    if (flag) {
                        CQCIS.msg("对不起，该帐号已经存在，请您重新输入！");
                        return false;
                    }
                    return true;*/
                    
                    var worker;
                    dwr.getWorkerByLoginCode(loginCode, {
                        async: false,
                        callback: function(lv){
                            worker = lv;
                        }
                    });
                    
                    return worker && worker.loginId != o.findField('loginId').getValue() ? '该工号已经存在！' : true;
                },
                'saveafter': function(){
                    CQCIS.msg('工号信息保存成功！');
                    grid.reload();
                }
            }
        });
        
        // 定义窗口
        var workWin = new CQCIS.form.WinForm({
            title: '员工工号信息',
            width: 420,
            height: 180,
            items: workForm
        });
        
        // 代理商列表
        var grid = new CQCIS.grid.PageGrid({
            el: 'workerList',
            title: '员工工号信息',
            disabled: true,
            firstColumn: 'radio',
            dwr: {
                call: dwr.pageWorker
            },
            filter: {},
            sortable: true,
            metas: gridMeta,
            tbar: ['-', addBtn, '-', editBtn],
            bbar: true,
            initload: true,
            listeners: {
                'rowdblclick': editBtn.handler,
                'rowcontextmenu': function(o, rowIndex, e){
                    e.stopEvent();
                    //定义增加右键菜单
                    var addMenu = new Ext.menu.Item({
                        iconCls: 'menu_insert',
                        id: 'addMenu',
                        text: '增加',
                        handler: addBtn.handler
                    });
                    //定义修改右键菜单
                    var editMenu = new Ext.menu.Item({
                        iconCls: 'menu_modify',
                        text: '修改',
                        handler: editBtn.handler
                    });
                    //定义列表右键菜单
                    var gridMenu = new Ext.menu.Menu({
                        id: 'gridMenu',
                        items: [addMenu, editMenu]
                    });
                    gridMenu.showAt(e.getXY());
                },
                'show': function(o){
                    if (o.rendered) {
                    	var staffId = vStaff.getSelectedRow().staffId;
                    	dwr.validStaff(staffId, {
                            async: false,
                            callback: function(lv){
                                if(lv.code == '-1'){
                                	addBtn.disable();
                                }
                            }
                        });
                        o.filter.staffId = vStaff.getSelectedRow().staffId;
                        o.reload();
                    } else {
                        o.show.defer(100, o, [o]);
                    }
                }
            }
        });
        
        return grid;
        
    }
};
